"""
日志配置和管理
"""
import sys
from pathlib import Path
from loguru import logger
from app.config import get_settings

settings = get_settings()

# 移除默认处理器
logger.remove()

# 控制台输出格式
console_format = (
    "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
    "<level>{level: <8}</level> | "
    "<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | "
    "<level>{message}</level>"
)

# 文件输出格式
file_format = (
    "{time:YYYY-MM-DD HH:mm:ss} | "
    "{level: <8} | "
    "{name}:{function}:{line} | "
    "{message}"
)

# 添加控制台处理器
logger.add(
    sys.stdout,
    format=console_format,
    level=settings.app.log_level,
    colorize=True,
    backtrace=True,
    diagnose=True
)

# 只使用控制台输出，不写入日志文件
print("日志配置: 仅使用控制台输出")

# 添加文件处理器 - 调试日志（仅在开发环境且明确启用时）
import os
if settings.app.debug and os.getenv("ENABLE_DEBUG_LOG", "false").lower() == "true":
    logger.add(
        log_dir / "debug.log",
        format=file_format,
        level="DEBUG",
        rotation="2 MB",  # 更小的文件大小
        retention="1 day",  # 只保留1天
        compression="zip",
        backtrace=True,
        diagnose=True
    )


def setup_logger():
    """设置日志器"""
    logger.info(f"日志系统初始化完成，级别: {settings.app.log_level}")
    return logger


def get_logger(name: str = None):
    """获取日志器"""
    if name:
        return logger.bind(name=name)
    return logger
